import cv2
image=cv2.imread('animal.png')
#使用Sobel算子在x轴方向计算图像梯度
Sobelx=cv2.Sobel(image,cv2.CV_64F,1,0)
#使用Sobel算子在y轴方向计算图像梯度
Sobely=cv2.Sobel(image,cv2.CV_64F,0,1)
grad_x=cv2.convertScaleAbs(Sobelx)          #求在x轴方向绝对值运算
grad_y=cv2.convertScaleAbs(Sobely)          #求在y轴方向绝对值运算
Sobelxy=cv2.addWeighted(grad_x,0.5,grad_y,0.5,0)        #加权求和运算
#使用Scharr算子在x轴方向计算图像梯度
Scharrx=cv2.Scharr(image,cv2.CV_64F,1,0)
#使用Scharr算子在y轴方向计算图像梯度
Scharry=cv2.Scharr(image,cv2.CV_64F,0,1)
grad_x=cv2.convertScaleAbs(Scharrx)         #求在x轴方向绝对值运算
grad_y=cv2.convertScaleAbs(Sobely)          #求在y轴方向绝对值运算
Scharrxy=cv2.addWeighted(grad_x,0.5,grad_y,0.5,0)      #加权求和运算
cv2.imshow("Input",image)           #显示原图像
cv2.imshow("Sobel",Sobelxy)         #显示使用Sobel算子边缘检测后的图像
cv2.imshow("Scharr",Scharrxy)       #显示使用Scharr算子边缘检测后的图像
cv2.waitKey()
cv2.destroyAllWindows()